import numpy as np
import image_io
from image_utils import logging
from PIL import Image
import cv2
def split_image_channels(image):
    try:
        logging.info("开始分割图像颜色通道")
        
        # 1. 检测多通道图像 image 是否真多通道的，如果是，显示错误信息并返回
        if image.shape[-1] < 2:
            raise ValueError("图像通道数必须大于等于2")
        
        # 2. 使用numpy的split函数，沿着通道维度分割图像
        channel_list = np.split(image, image.shape[-1], axis=-1)
        
        # 3. 把分割后的通道图像添加到一个列表 channel_list 中，注意要去掉多余的维度
        channel_list = [channel.squeeze() for channel in channel_list]
        
        logging.info(f"成功分割图像颜色通道")
        return channel_list
    except Exception as e:
        raise ValueError(f"在分割图像颜色通道时发生错误: {e}")
def merge_image_channels(file_paths):
    try:
        logging.info("开始合并图像通道")
        
        # 加载每个图像文件，然后将它们合并成一个多通道图像 merged_image
        images = []
        for file_path in file_paths:
            image = image_io.load_image(file_path)
            if image.ndim != 2:
                raise ValueError("要合并子图像必须是单通道图像，不能是多通道图像")
            images.append(image)
        
        # 使用PIL库的merge函数合并多个单通道图像
        mode = 'RGB' if len(images) >= 3 else None
        merged_image = np.stack(images, axis=-1)
        
        logging.info("成功合并图像通道")
        return merged_image
    except Exception as e:
        raise ValueError(f"在合并图像通道时发生错误: {e}")
